package cn.ygh.bbo.framerwork.core;


import lombok.Data;

/**
 * @author ygh
 * @Desc 自定义响应数据结构
 * 这个类是提供给门户，ios，安卓，微信商城用的
 * 门户接受此类数据后需要使用本类的方法转换成对于的数据类型格式（类，或者list）
 * 其他自行处理
 * 200成功
 * 默认的失败201
 * @date 2019/11/16
 */
@Data
public class ResultAjax<T> implements java.io.Serializable {

    private static final long serialVersionUID = -4203638310595400550L;

    /**
     * 响应码
     */
    private Integer code;

    /**
     * 响应消息
     */
    private String msg;

    /**
     * 响应数据
     */
    private T obj = null;

    public ResultAjax() {
    }

    public ResultAjax(Integer code) {
        this.code = code;
    }

    public ResultAjax(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public ResultAjax(Integer code, String msg, T obj) {
        this.code = code;
        this.msg = msg;
        this.obj = obj;
    }

    public static <V> ResultAjax<V> success() {
        return success(null);
    }

    public static <V> ResultAjax<V> success(V v) {
        return success("success", v);
    }

    public static <V> ResultAjax<V> success(String msg, V o) {
        return new ResultAjax<>(200, msg, o);
    }

    public static ResultAjax fail() {
        return fail(201, "fail");
    }

    public static ResultAjax fail(String msg) {
        return fail(201, msg);
    }

    public static ResultAjax fail(Integer state, String msg) {
        return fail(state, msg, null);
    }

    public static <V> ResultAjax<V> fail(Integer state, String msg, V o) {
        return new ResultAjax<>(state, msg, o);
    }


}
